﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FlowerPower
{
    public partial class frmVare : Form
    {
        string originalVaerdiForVarenavn = "";
        string originalVaerdiForVarepris = "";
        string originalVaerdiForVarebeskrivelse = "";
        string originalVaerdiForFroetypenavn = "";

        public frmVare()
        {
            InitializeComponent();
            DBcontroller db = new DBcontroller();
            List<Varegruppe> varegrupper = new List<Varegruppe>();
            varegrupper = db.IndlaesVaregrupper();
            foreach (Varegruppe item in varegrupper)
            {
                cboEksisterendeVaresVareGruppe.Items.Add(item.Navn);
                cboNyVaresVareGruppe.Items.Add(item.Navn);               
            }
        }

        private void indlaesVarer(string soegeord = "")
        {
            lvVarer.Items.Clear();
            
            List<Vare> varer = new List<Vare>();
            DBcontroller db = new DBcontroller();

            if (soegeord == "")
            {
                // Der er ikke tale om en søgning så vi indlæser alle varer
                varer = db.IndlaesVareUdfraFroetype(cboEksisterendeVaresFroeType.SelectedItem.ToString());
            }
            else if (soegeord != "")
            {
                // Der er tale om en søgning så vi bruger resultatet af en søgning i databasen
                // -- Endnu ikke implementeret --
                    
                    //SoegVare(soegeord);
            }
            foreach (Vare item in varer)
            {
                if (item != null)
                {
                    string[] str = { Convert.ToString(item.Varenummer), item.Varenavn, Convert.ToString(item.Varepris), item.Varebeskrivelse, item.Froetypenavn};
                    ListViewItem lvItem = new ListViewItem(str);
                    lvVarer.Items.Add(lvItem);
                }
            }
            lvVarer.Update();
        }

        private void cboNyVaresVareGruppe_SelectedIndexChanged(object sender, EventArgs e)
        {
            cboNyVaresFroeType.Items.Clear();
            cboEksisterendeVaresFroeType.Text = "";
            DBcontroller db = new DBcontroller();
            List<Froetype> froetyper = new List<Froetype>();
            froetyper = db.IndlaesFroetyper(cboNyVaresVareGruppe.SelectedItem.ToString());                             
            foreach (Froetype item in froetyper)
            {
                cboNyVaresFroeType.Items.Add(item.Navn);
            }
            cboNyVaresFroeType.Enabled = true;
            lblNyVaresFroetype.Enabled = true;

            gboRedigerValgtVare.Enabled = true;
        }
       



        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnTilbageTilVareVareGruppeFroeTypeMenu_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cboVareGruppe_SelectedIndexChanged(object sender, EventArgs e)
        {
            cboEksisterendeVaresFroeType.Items.Clear();
            cboEksisterendeVaresFroeType.Text = "";
            lvVarer.Items.Clear();

            DBcontroller db = new DBcontroller();
            List<Froetype> froetyper = new List<Froetype>();
            froetyper = db.IndlaesFroetyper(cboEksisterendeVaresVareGruppe.SelectedItem.ToString());
            foreach (Froetype item in froetyper)
            {
                cboEksisterendeVaresFroeType.Items.Add(item.Navn);
            }
            cboEksisterendeVaresFroeType.Enabled = true;
            lblEksisterendeVarerFroetype.Enabled = true;
        }

        private void cboEksisterendeVaresFroeType_SelectedIndexChanged(object sender, EventArgs e)
        {
            indlaesVarer();
        }

        private void lvVarer_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListView.SelectedListViewItemCollection valgtVare = this.lvVarer.SelectedItems;
            gboRedigerValgtVare.Enabled = true;
            foreach (ListViewItem item in valgtVare)
            {
                // Gem værdierne for så vi kan se om de bliver ændret af brugeren
                // Bemærk at varenummer ikke er gemt da det ikke kan ændres af brugeren 
                originalVaerdiForVarenavn = item.SubItems[1].Text;
                originalVaerdiForVarepris = item.SubItems[2].Text;
                originalVaerdiForVarebeskrivelse = item.SubItems[3].Text;
                originalVaerdiForFroetypenavn = item.SubItems[4].Text;

                txtValgtVaresVareNummer.Text = item.SubItems[0].Text;
                txtValgtVaresVareNavn.Text = item.SubItems[1].Text;
                txtValgtVaresPris.Text = item.SubItems[2].Text;
                txtValgtVaresBeskrivelse.Text = item.SubItems[3].Text;
          
                cboValgtVaresFroeType.Items.Clear();
                cboValgtVaresFroeType.Text = item.SubItems[4].Text;
                DBcontroller db = new DBcontroller();
                List<Froetype> froetyper = new List<Froetype>();
                froetyper = db.IndlaesFroetyper(cboEksisterendeVaresVareGruppe.Text);
                foreach (Froetype froetypeItem in froetyper)
                {
                    cboValgtVaresFroeType.Items.Add(froetypeItem.Navn);
                }
                cboValgtVaresFroeType.Update();
            }
        }

        private void btnSletValgtVare_Click(object sender, EventArgs e)
        {
            
            string nummerPaaVareDerSkalSlettes = "";

            ListView.SelectedListViewItemCollection valgtVare = this.lvVarer.SelectedItems;
            foreach (ListViewItem item in valgtVare)
            {
                nummerPaaVareDerSkalSlettes = item.SubItems[0].Text;
            }
            
            DBcontroller db = new DBcontroller();
            db.SletVare(nummerPaaVareDerSkalSlettes);
            
            btnSletValgtVare.Enabled = false;
            gboRedigerValgtVare.Enabled = false;
            txtValgtVaresPris.Text = "";
            txtValgtVaresVareNummer.Text = "";
            txtValgtVaresBeskrivelse.Text = "";
            txtValgtVaresVareNavn.Text = "";
            cboValgtVaresFroeType.Text = "";
            indlaesVarer();
        }

        private void btnOpretNyVare_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            db.OpretVare(txtNyVaresVareNavn.Text, Convert.ToInt32(txtNyVaresPris.Text), txtNyVaresBeskrivelse.Text, cboNyVaresFroeType.Text);
            cboEksisterendeVaresVareGruppe.Text = cboNyVaresVareGruppe.Text;
            
            cboEksisterendeVaresFroeType.Items.Clear();
            List<Froetype> froetyper = new List<Froetype>();
            froetyper = db.IndlaesFroetyper(cboEksisterendeVaresVareGruppe.Text);
            foreach (Froetype item in froetyper)
            {
                cboEksisterendeVaresFroeType.Items.Add(item.Navn);
            }
            cboEksisterendeVaresFroeType.Text = cboNyVaresFroeType.Text;
            indlaesVarer();

            txtNyVaresBeskrivelse.Text = "";
            txtNyVaresPris.Text = "";
            txtNyVaresVareNavn.Text = "";
            cboNyVaresVareGruppe.Text = "";
            cboNyVaresFroeType.Text = "";
        }

        private void btnGemAendringerAfValgtVare_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            db.RetVare(Convert.ToInt32(txtValgtVaresVareNummer.Text), cboValgtVaresFroeType.Text, txtValgtVaresVareNavn.Text, txtValgtVaresBeskrivelse.Text, Convert.ToInt32(txtValgtVaresPris.Text));
            indlaesVarer();
            txtValgtVaresVareNummer.Clear();
            txtValgtVaresBeskrivelse.Clear();
            txtValgtVaresVareNavn.Clear();
            txtValgtVaresPris.Clear();
            cboValgtVaresFroeType.Text = "";
            gboRedigerValgtVare.Enabled = false;

        }

        private void btnAnnullerOprettelseAfNyVare_Click(object sender, EventArgs e)
        {
            txtNyVaresBeskrivelse.Clear();
            txtNyVaresPris.Clear();
            txtNyVaresVareNavn.Clear();
            cboNyVaresVareGruppe.Text = "";
            cboNyVaresFroeType.Text = "";
            cboNyVaresFroeType.Enabled = false;
        }

        private void btnAnnullerRedigeringAfValgtVaresVaerdier_Click(object sender, EventArgs e)
        {
            txtValgtVaresBeskrivelse.Clear();
            txtValgtVaresPris.Clear();
            txtValgtVaresVareNavn.Clear();
            txtValgtVaresVareNummer.Clear();
            gboRedigerValgtVare.Enabled = false;
            cboValgtVaresFroeType.Text = "";
        }
    }
}
